Telegram Group & Telegram Channel
Сегодня хочу показать вам один из приёмов, который часто выручает в реальной разработке на C++ — оборачивание C API в безопасные RAII-объекты.

Многие библиотеки на C (например, OpenSSL, SQLite, libpng) требуют вручную управлять ресурсами — открывать, закрывать, аллоцировать и освобождать. Это источник ошибок: забыли free(), упустили close(), получили утечку памяти или файлового дескриптора.

В C++ мы можем обернуть такие ресурсы в класс с аккуратным деструктором:


class FileHandle {
public:
explicit FileHandle(FILE* file) : file_(file) {}
~FileHandle() {
if (file_) {
fclose(file_);
}
}

FILE* get() const { return file_; }

private:
FILE* file_;
};


Теперь, даже если функция выбросит исключение или произойдет выход из области видимости, файл закроется автоматически!

Такие классы легко комбинировать с std::unique_ptr через кастомные делетеры для ещё большей безопасности.

Не забывайте: RAII (Resource Acquisition Is Initialization) — один из важнейших паттернов для профессионального C++.

➡️ @cpp_geek



tg-me.com/cpp_geek/311
Create:
Last Update:

Сегодня хочу показать вам один из приёмов, который часто выручает в реальной разработке на C++ — оборачивание C API в безопасные RAII-объекты.

Многие библиотеки на C (например, OpenSSL, SQLite, libpng) требуют вручную управлять ресурсами — открывать, закрывать, аллоцировать и освобождать. Это источник ошибок: забыли free(), упустили close(), получили утечку памяти или файлового дескриптора.

В C++ мы можем обернуть такие ресурсы в класс с аккуратным деструктором:


class FileHandle {
public:
explicit FileHandle(FILE* file) : file_(file) {}
~FileHandle() {
if (file_) {
fclose(file_);
}
}

FILE* get() const { return file_; }

private:
FILE* file_;
};


Теперь, даже если функция выбросит исключение или произойдет выход из области видимости, файл закроется автоматически!

Такие классы легко комбинировать с std::unique_ptr через кастомные делетеры для ещё большей безопасности.

Не забывайте: RAII (Resource Acquisition Is Initialization) — один из важнейших паттернов для профессионального C++.

➡️ @cpp_geek

BY C++ geek


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/cpp_geek/311

View MORE
Open in Telegram


C geek Telegram | DID YOU KNOW?

Date: |

Start with a fresh view of investing strategy. The combination of risks and fads this quarter looks to be topping. That means the future is ready to move in.Likely, there will not be a wholesale shift. Company actions will aim to benefit from economic growth, inflationary pressures and a return of market-determined interest rates. In turn, all of that should drive the stock market and investment returns higher.

The Singapore stock market has alternated between positive and negative finishes through the last five trading days since the end of the two-day winning streak in which it had added more than a dozen points or 0.4 percent. The Straits Times Index now sits just above the 3,060-point plateau and it's likely to see a narrow trading range on Monday.

C geek from no


Telegram C++ geek
FROM USA